package PersistenciaDAOs;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import logica.ConexionBD;
import logica.Partida;
import SQLQrys.QrysPartida;
import exceptions.PersistenciaException;


public class DAOPartida {
	private ConexionBD DBC;
	
	public void insert(Partida Par) throws PersistenciaException{
		String ins=null;
		try {
			
			QrysPartida con = new QrysPartida();
			ins=con.insertPartida();
			PreparedStatement pstmt1;
			DBC=new ConexionBD();
			pstmt1 = DBC.getConnection().prepareStatement(ins);

			pstmt1.setInt(1, Par.getId());
			pstmt1.setDate(2, (java.sql.Date) Par.getFecha());
			pstmt1.setInt(3, Par.getIdJugador1());
			pstmt1.setInt(4, Par.getIdJugador2());
			pstmt1.setInt(5, Par.getIdGanador());

			pstmt1.executeUpdate();
			//cierro preparedStatement.
			pstmt1.close();
			
		} catch (SQLException e) {
			e.printStackTrace();
			throw new PersistenciaException("Se ha producido un error al intentar guardar la partida");
		}finally{
			DBC.desconectar();
		}	
	}
	
	public Partida select(int idPart){
		String sel=null;
		
		Partida Par = new Partida();
		
		try{
			QrysPartida cons=new QrysPartida();
			
			sel = cons.selectPartida();
			//creo preparedStatement, seteo parametros y ejecuto la consulta.
			PreparedStatement pstmt1;

			DBC=new ConexionBD();

			pstmt1 = DBC.getConnection().prepareStatement(sel);
			pstmt1.setInt(1, idPart);
			
			ResultSet rs = pstmt1.executeQuery();
			while(rs.next()){
				Par.setId(rs.getInt("id"));
				Par.setFecha(rs.getDate("fecha"));
				Par.setIdJugador1(rs.getInt("mercante"));
				Par.setIdJugador2(rs.getInt("pirata"));
				Par.setIdGanador(rs.getInt("id_ganador"));
			}	
			
			rs.close();
			pstmt1.close();
	}
		catch (SQLException e) {
			e.printStackTrace();
			throw new PersistenciaException("Se ha producido un error al intentar levantar la partida");
			}finally{
				DBC.desconectar();
				return Par;
				}	
			}
}
